剑指Offer 27 二叉搜索树与双向链表

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

思路

  1. 可能代码写得少,没啥思路;只知道中序遍历,在中间做文章,结果还不知道做啥

    代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    TreeNode head;
    TreeNode realhead;
    public TreeNode Convert(TreeNode pRootOfTree) {
    if (pRootOfTree==null)
    return null;
    TreeNode node=pRootOfTree;
    if (node.left!=null)
    Convert(node.left);
    if (head==null)
    {
    head=pRootOfTree;
    realhead=pRootOfTree;
    }
    else
    {
    head.right=pRootOfTree;
    pRootOfTree.left=head;
    head = pRootOfTree;
    }
    if (node.right!=null)
    Convert(node.right);
    return realhead;
    }

收获

  1. 二叉树比较常考,三种遍历方法一定要记牢;
  2. 画图,先想清楚,在写代码!